home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / mac / files / t_sys5 / unixcpio.gz / unixnet.cpio / eagle.h < prev    next >
C/C++ Source or Header  |  1994-07-11  |  4KB  |  114 lines

  1. /* Hardware-dependent routines for the EAGLE card for the PC
  2.  * This card contains a Zilog 8530 only - no modem!
  3.  */
  4. #define EGMAX    1        /* One card max */
  5. #define AX_MTU    512
  6. #define INTMASK 0x21        /* Intel 8259 interrupt controller mask */
  7.  
  8. struct EGTAB {
  9.     void (*oldvec)();    /* Original interrupt vector contents */
  10.     int16 addr;        /* Base I/O address */
  11.     unsigned vec;        /* Vector */
  12.     long ints;        /* Interrupt count */
  13. };
  14. extern struct EGTAB eagle[];
  15.  
  16. /* Register offset info, specific to the EAGLE
  17.  * E.g., to read the data port on channel A, use
  18.  *    inportb(egchan[dev].base + CHANA + DATA)
  19.  */
  20. #define CHANB        0    /* Base of channel B regs */
  21. #define CHANA        2    /* Base of channel A regs */
  22.  
  23. /* 8530 ports on each channel */
  24. #define CTL    0
  25. #define DATA    1
  26. #define DMACTRL     4    /* Base of channel + 4 */
  27.  
  28. /* EAGLE DMA/INTERRUPT CONTROL REGISTER */
  29. #define DMAPORT     0    /* 0 = Data Port */
  30. #define INTPORT     1    /* 1 = Interrupt Port */
  31. #define DMACHANA    0    /* 0 = DMA on CHANNEL A */
  32. #define DMACHANB    2    /* 1 = DMA on Channel B */
  33. #define DMADISABLE    0    /* 0 = DMA disabled */
  34. #define DMAENABLE    4    /* 1 = DMA enabled */
  35. #define INTDISABLE    0    /* 0 = Interrupts disabled */
  36. #define INTENABLE    8    /* 1 = Interrupts enabled */
  37. #define INTACKTOG    10    /* 1 = INT ACK TOGGLE */
  38.  
  39.  
  40. struct egchan {
  41.     long rxints;        /* Receiver interrupts */
  42.     long txints;        /* Transmitter interrupts */
  43.     long exints;        /* External/status interrupts */
  44.     long spints;        /* Special receiver interrupts */
  45.  
  46.     int enqueued;        /* Packets actually forwarded */
  47.     int rxframes;        /* Number of Frames Actally Received */
  48.     int toobig;        /* Giant receiver packets */
  49.     int crcerr;        /* CRC Errors */
  50.     int aborts;        /* Receiver aborts */
  51.     int rovers;        /* Receiver Overruns */
  52.  
  53.     char status;        /* Copy of R0 at last external interrupt */
  54.     struct mbuf *rcvq;    /* Receive queue */
  55.     int16 rcvcnt;        /* Number of packets on rcvq */
  56.     struct mbuf *rcvbuf;    /* Buffer for current rx packet */
  57.     int16 bufsiz;        /* Size of rcvbuf */
  58.     char *rcp;        /* Pointer into rcvbuf */
  59.  
  60.     struct mbuf *sndq;    /* Packets awaiting transmission */
  61.     int16 sndcnt;        /* Number of packets on sndq */
  62.     struct mbuf *sndbuf;    /* Current buffer being transmitted */
  63.     char tstate;        /* Tranmsitter state */
  64. #define IDLE    0        /* Transmitter off, no data pending */
  65. #define ACTIVE    1        /* Transmitter on, sending data */
  66. #define UNDERRUN 2        /* Transmitter on, flushing CRC */
  67. #define FLAGOUT 3        /* CRC sent - attempt to start next frame */
  68. #define DEFER 4         /* Receive Active - DEFER Transmit */
  69.     char rstate;        /* Set when !DCD goes to 0 (TRUE) */
  70. /* Normal state is ACTIVE if Receive enabled */
  71. #define RXERROR 2        /* Error -- Aborting current Frame */
  72. #define RXABORT 3        /* ABORT sequence detected */
  73. #define TOOBIG 4        /* too large a frame to store */
  74.     int16 dev;        /* Device number */
  75.     int16 base;        /* Base of I/O registers */
  76.     int16 stata;        /* address of Channel A status regs */
  77.     int16 statb;        /* address of Channel B status regs */
  78.     int16 dmactrl;        /* address of DMA/INTERRUPT reg on card */
  79.     int16 speed;        /* Line speed, bps */
  80. #define TXDELAY 0        /* Transmit Delay 10 ms/cnt */
  81. #define PERSIST 1        /* Persistence (0-255) as a % */
  82. #define SLOTIME 2        /* Delay to wait on persistence hit */
  83. #define SQUELDELAY 3        /* Delay after XMTR OFF for seuelch tail */
  84.     char params[4];     /* Channel control parameters */
  85. };
  86. extern struct egchan egchan[];
  87.  
  88. /* Interrupt vector handlers (assembler) */
  89. int pcint();
  90.  
  91. /* Other utility routines */
  92. char read_sio();
  93.  
  94. #define OFF    0
  95. #define ON    1
  96. #define INIT    2
  97.  
  98. /* 8530 clock speed */
  99.  
  100. #define XTAL    ((long) 3686400/2)     /* 32X clock constant */
  101.  
  102. /*************************************************************/
  103. /* TEMP FOR DEBUG ONLY - eliminates Divide by zero interrupt */
  104. /*               - preset for 1200 BAUD !!!!!!!!!!!!!! */
  105. /*************************************************************/
  106. #define TXCONST 1534             /* (XTAL/1200L)-2 */
  107. #define RXCONST 46             /* ((XTAL/32)/1200L)-2 */
  108.  
  109. /* Baud rate generator definitions */
  110. struct baudrate {
  111.     int16 speed;
  112.     char val;
  113. };
  114.